{"componentChunkName":"component---node-modules-rocketseat-gatsby-theme-docs-core-src-templates-docs-query-js","path":"/compilation","result":{"data":{"mdx":{"id":"142d5369-6689-56bd-a451-a3ee7afa93dd","excerpt":"The project utilizes  hardhat  as its development pipeline tool, containing an array of tests and scripts coded in JavaScript. To compile the project, the…","fields":{"slug":"/compilation/"},"frontmatter":{"title":"Compilation","description":"Includes the compilation instructions that were followed as well as any issues that were identified by the compiler itself.","image":null,"disableTableOfContents":null},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Compilation\",\n  \"description\": \"Includes the compilation instructions that were followed as well as any issues that were identified by the compiler itself.\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"The project utilizes \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"hardhat\"), \" as its development pipeline tool, containing an array of tests and scripts coded in JavaScript.\"), mdx(\"p\", null, \"To compile the project, the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"compile\"), \" command needs to be issued via the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"npx\"), \" CLI tool to \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"hardhat\"), \":\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"npx hardhat compile\\n\")), mdx(\"p\", null, \"The \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"hardhat\"), \" tool automatically selects Solidity version \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"0.7.5\"), \" based on the version specified within the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"hardhat.config.js\"), \" file.\"), mdx(\"p\", null, \"The project contains discrepancies with regards to the Solidity version used, however, they are constrained in the external dependencies of the project and can be safely ignored.\"), mdx(\"p\", null, \"The Stakewise team has locked the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"pragma\"), \" statements to \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"0.7.5\"), \" which is also the version we utilized for our static analysis as well as optimizational review of the codebase.\"), mdx(\"p\", null, \"During compilation with the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"hardhat\"), \" pipeline, no errors were identified that relate to the syntax or bytecode size of the contracts.\"), mdx(\"p\", null, \"Given that the compiler version utilized is one that has been seldomly used in production and the codebase makes extensive use of concepts that strain the capabilities of the compiler such as multiple dynamic array arguments, consecutive \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"keccak256\"), \" instructions and more during the audit we also assessed the codebase's susceptibility to those compiler vulnerabilities.\"), mdx(\"p\", null, \"The list of known bugs applicable to the compiler version utilized by the project surface only when \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"abi.decode\"), \" is utilized (SOL-2021-2), when \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"immutable\"), \" variables are used (SOL-2021-3), or when \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"keccak256\"), \" operations are performed consecutively in an \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"assembly\"), \" block (SOL-2021-1). Neither of those traits was observable in the codebase and as such it does not suffer from any known vulnerabilities.\"), mdx(\"p\", null, \"We should note that due to the said compiler version being seldomly used in production, we strongly advise the Stakewise team to closely monitor compiler vulnerability disclosures as they are released and to take the appropriate actions necessary to remediate them should they arise.\"));\n}\n;\nMDXContent.isMDXComponent = true;","headings":[]}},"pageContext":{"slug":"/compilation/","prev":{"label":"Introduction","link":"/"},"next":{"label":"Static Analysis","link":"/static-analysis"}}},"staticQueryHashes":["1954253342","2328931024","2501019404","973074209"]}